package com.shelpe.services.keywords.readdao;

import java.util.List;
import java.util.Map;

import com.shelpe.services.keywords.model.KeywordEffectExample;
import com.shelpe.services.keywords.model.KeywordID;
import com.shelpe.services.keywords.model.RptKeyword;
import com.shelpe.services.keywords.model.RptKeywordDto;
import com.shelpe.services.keywords.model.RptKeywordExample;
import com.shelpe.services.keywords.model.RptKeywordKey;

public interface ReadRptKeywordMapper {
    int countByExample(RptKeywordExample example);

    List<RptKeyword> selectByExample(RptKeywordExample example);

    RptKeyword selectByPrimaryKey(RptKeywordKey key);
    
    RptKeyword selectSumByExample(RptKeywordExample example);
    /**
     * 分组获取关键词的ctr、roi 
     * @param example
     * @return
     */
    List<RptKeyword> selectCtrRoiByExample(RptKeywordExample example);
    /**
     *获取ctr宝贝均值 
     * @param example
     * @return
     */
    Map<Long, Float> selectAvgCtrByExample(RptKeywordExample example);

    /**
     * 获取展现量
     * @param example
     * @return 
     */
    List<RptKeyword> selectImpressionsByExample(RptKeywordExample example);

    /**
     * 获取点击量 
     * @param example
     * @return 
     */
    List<RptKeyword> selectClickByExample(RptKeywordExample example);
    
    /**
     * 获取质量得分 
     * @param example
     * @return 
     */
    List<RptKeyword> selectQscoreByExample(RptKeywordExample example);
    
    /**
     * 指标摘要
     * @param example
     * @return
     */
    RptKeyword selectSummariesMetric(RptKeywordExample example);
    /**
     * 获取趋势图 数据  时间维度  以日期分组 
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByDate(RptKeywordExample example);
    /**
     * 获取趋势图 数据  推广单元维度  推广计划级别 以推广组分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByCampaignId(RptKeywordExample example);
    /**
     * 获取趋势图 数据   推广单元维度  推广组级别 以关键词分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByAdgroupId(RptKeywordExample example);
    /**
     * 获取趋势图 数据   推广单元维度  用户级别 以推广计划分组
     * @param example
     * @return
     */
    List<RptKeyword> selectReportsTrendByUserId(RptKeywordExample example);
    
    List<RptKeyword> selectSummariesMetricByKeyword(RptKeywordExample example);
    
    List<KeywordID> selectIDsByExampleGroupByKeywordID(RptKeywordExample example);
    List<RptKeyword> selectByExampleGroupByKeywordID(RptKeywordExample example);
    
    List<RptKeywordDto> selectByExampleFromKeywordAndRpt(KeywordEffectExample example);
}